import { router } from "./index";
import UserModel from '@/moduls/userModel';
import RoleModel from '@/moduls/roleModel';
import md5 from 'blueimp-md5';

// 获取所有用户
router.get("/manage/user/all",(req,res)=>{
  UserModel.find({username:{'$ne':'admin'}}).then(users=>{
      res.send({status:0,data:users})
  }).catch(error=>{
      console.log("获取所有用户异常",error);
      res.send({status:1,msg:'获取所有用户异常，请重新尝试'})
  })
})
// 获取用户列表（分页）
router.post('/manage/user/list',(req,res)=>{
  let page = req.body.page || 1
  let size = req.body.size || 5
  UserModel.find({username:{'$ne':'admin'}}).then(users=>{
      let count = users.length
      // skip:越过多少条数据开始查询，limit:查询多少条数据
      UserModel.find({username:{'$ne':'admin'}}).skip((page - 1) * parseInt(size)).limit(parseInt(size)).exec().then(data=>{
          RoleModel.find().then(roles=>{
              res.send({status:0,data:{total:count,data:data,roles:roles}})
          })
      })
  }).catch(error=>{
      console.log("获取用户列表（分页）异常",error);
      res.send({status:1,msg:'获取用户列表（分页）异常，请重新尝试'})
  })
})
// 添加用户
router.post('/manage/user/add',(req,res)=>{
  const {username,password} = req.body
  UserModel.findOne({username}).then(user=>{
      if(user){
          res.send({status:1,msg:'此用户已存在'})
          return new Promise(()=>{})
      }else{
          return UserModel.create({...req.body,password:md5(password || 'buka')})
      }
  }).then(data=>{
      res.send({status:0,data})
  }).catch(error=>{
      console.log("添加用户异常",error);
      res.send({status:1,msg:'添加用户异常，请重新尝试'})
  })
})
// 根据_id查询用户
router.get('/manage/user/find',(req,res)=>{
  const user = req.query
  UserModel.findById({_id:user._id}).then(data=>{
      res.send({status:0,data})
  }).catch(error=>{
      console.log("根据id查询用户异常",error);
      res.send({status:1,msg:'根据id查询用户异常，请重新尝试'})
  })
})
// 修改用户信息
router.post('/manage/user/update',(req,res)=>{
  const user = req.body
  UserModel.findById({_id:user._id}).then(data=>{
      if(!data) {
          return res.send({status:1,msg:'用户不存在'});
      }
      if(data.password != user.password){
          user.password = md5(user.password)
      }
      UserModel.findOneAndUpdate({_id:user._id},user).then(oldUser=>{
          if(!oldUser) {
              return res.send({status:1,msg:'更新失败'});
          }
          const userObj = oldUser.toObject();
          const data = {...userObj, ...user};
          res.send({status:0,data})
      }).catch(error=>{
          console.log("修改用户信息异常",error);
          res.send({status:1,msg:'修改用户信息异常，请重新尝试'})
      })
  })
})
// 删除用户
router.post('/manage/user/delete',(req,res)=>{
  const {userId} = req.body
  UserModel.deleteOne({_id:userId}).then(()=>{
      res.send({status:0})
  }).catch(error=>{
      console.log("删除用户异常",error);
      res.send({status:1,msg:'删除用户异常，请重新尝试'})
  })
})
// 获取用户最新权限列表
router.post('/menus',(req,res)=>{
  const{roleId} = req.body
  RoleModel.findOne({_id:roleId}).then(role=>{
      if(!role) {
          return res.send({status:1,msg:'角色不存在'});
      }
      res.send({status:0,data:{menus:role.menus || []}})
  }).catch(error=>{
      console.log("获取角色权限列表异常",error);
      res.send({status:1,msg:'获取角色权限列表异常，请重新尝试'})
  })
})